//
// Created by ASUS on 24-4-17.
//

#include "LinkStack.h"
#include <stdio.h>
#include <stdlib.h>


LiStack * LiStack_Init() {
    LiStack *l = (LiStack*)malloc(sizeof(LiStack));
    l->next = NULL;
    return l;
}

int LiStack_push(LiStack *l, int e) {
    LiStack *q = (LiStack*)malloc(sizeof(LiStack));
    q->data = e;
    q->next = l->next;
    l->next = q;
    return 1;
}

int LiStack_pop(LiStack *l, int *e) {
    if(l->next == NULL) {
        return 0;
    }
    LiStack *q = l->next;
    *e = q->data;
    l->next = q->next;
    free(q);
    return 1;
}

ElemType LiStack_GetTop(LiStack *l) {
    if(l->next == NULL)
        return 0;
    return l->next->data;
}

int LiStack_Empty(LiStack *l) {
    if(l->next == NULL)
        return 1;
    return 0;
}

void LiStack_Print(LiStack *l) {
    if(l->next == NULL) {
        printf("stack: NULL\n");
    }

    LiStack *q = l->next;
    printf("Stack: top ");
    while (q != NULL) {
        printf("%d ",q->data);
        q = q->next;
    }
    printf("end \n");
}
